"""
索引：列表，元组，字符串都支持索引，格式：变量名 [index]
切片：列表，元组，字符串都支持切片，格式：变量名 [start:end:step] 其结果是生成新的对应容器，原来的不会被改变
相加相乘：列表，元组，字符串都支持相加相乘
包含：列表，元组，字符串，字典的键都支持包含，也就是 in 的作用
"""
lst = [1, 23, None, True, 'lol']
tp = (1, 23, None, True, 'lol')
dic2 = {'name': None, 'sex': '男', 'age': 22, 'credits': 1340.0980, 'exist': True}
str11 = 'balabala'
print(lst[1])
print(tp[1])
print(str11[1])
print(lst[-4])
print(tp[-4])
print(str11[-7])  # 索引数为负数时，代表从右往左，起始数为-1.
lst1 = ['red', 'green', 'yellow', 'black']
print(lst1[1:3:1])
print(lst1[1:4:2])  # 切片操作可以滤掉序列中不想输出的。注意：切片中数字都指的是下标（索引）
# 其中start默认值为0，end默认值为序列长度，step默认值为1，皆可省略，但注意不论如何省缺省值引号的删留需注意对结果的影响。
# 如：print(lst1[:])等价于print(lst1)
print(lst1[::-1])  # 只需要记住这一种切片的特殊使用即可，用于将序列翻转
print(lst1 is tp)
print(lst1 + lst)  # 相加操作按相加顺序生成新的列表
print(lst1)
# print(lst1 + tp)  # 相加操作不允许不同类型的数据类型之间相加
tp1 = (1, 2, 3, 4)
print(len(tp1))
print(max(dic2))  # 找序列(字典取键)中的最大最小值必须内部元素为同一类型数据，数字好理解，若是字母，按ASCⅡ 码值取最值
print(min(tp1))
print(sum(tp1))  # 求和操作要求序列内部元素都是数字
for x in reversed(lst1):  # 当不想变动原序列却要翻转，可使用 过去式表示已完成翻转，建议用循环取结果
    print(x, end=' ')
print()
print(sorted(lst1))  # 当不想变动原序列却要排序，可使用 过去式表示已完成排序
print(lst1)
lst1.sort()
print(lst1)
for a, b in enumerate(tp1):  # enumerate 的作用是获取序列中的索引和对应的值
    print(a, b)
print(type(str(lst)), type(lst), str(lst), lst)
print(type(lst), lst)
print(type(str(tp)), type(tp), str(tp), tp)
print(type(tp), tp)
print(type(str(dic2)), type(dic2), str(dic2), dic2)
print(type(dic2), dic2)  # 通过上述操作可知，字符串转型是临时的，并且可以对列表，元组和字典进行转型
print('==' * 25)
print(type(tuple(lst)), type(lst), tuple(lst), lst)
print(type(lst), lst)
print(type(tuple('tp')), type('tp'), tuple('tp'), 'tp')
print(type('tp'), 'tp')
print(type(tuple(dic2)), type(dic2), tuple(dic2), dic2)
print(type(dic2), dic2)  # 通过上述操作可知，元组转型是临时的，并且可以对列表，字符串和字典（键）进行转型
print('==' * 25)
print(type(list(tp)), type(tp), list(tp), tp)
print(type(tp), tp)
print(type(list('tp')), type('tp'), list('tp'), 'tp')
print(type('tp'), 'tp')
print(type(list(dic2)), type(dic2), list(dic2), dic2)
print(type(dic2), dic2)  # 通过上述操作可知，列表转型是临时的，并且可以对元组，字符串和字典（键）进行转型
print('==' * 25)
lst2 = [('a', 1), ['b', 2], {'c': 3, 3: 4}]
tp2 = (('a', 1), ['b', 2], {'c': 3, 3: 4})
print(type(dict(lst2)), type(lst2), dict(lst2), lst2)
print(type(lst2), lst2)
print(type(dict(tp2)), type(tp2), dict(tp2), tp2)
print(type(tp2), tp2)  # 通过上述操作可知，字典转型是临时的，并且可以对元组，列表进行转型
# 要求是待转型的元组或列表的每个元素自己都有两个元素
